<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="banner-heading flex_ccenter">
            <div class="heading-item">
              <h1 class="title fw700 f-42 c-fff">
                Téléchargement de l'histoire Instagram
              </h1>
              <h2 class="sub c-fff f-18 fw400">
                Meilleur téléchargeur d'histoires Instagram gratuit
              </h2>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                    type="text"
                    class="input f-18"
                    v-model="input"
                    @input="handleInput"
                    @paste="handleInput"
                    placeholder="Paste URL Instagram"
                    list="fruits"
                    name="fruit"
                  />
                  <datalist id="fruits">
                    <option value="Apple"></option>
                    <option value="Banana"></option>
                    <option value="Cherry"></option>
                  </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>
                Récupération des données, veuillez patienter quelques secondes!
              </div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Le site ne peut pas traiter votre lien car il est privé
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Les données que vous avez saisies ne constituent pas un lien,
              veuillez saisir un lien valide pour exemple:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Télécharger avec l'application Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Notre application offre une solution de téléchargement simple et
                rapide Vidéos Instagram, fournissant des vidéos de qualité HD
                sans filigranes.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Télécharger une histoire Instagram avec Savinginsta
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta.Com est le premier téléchargeur d'histoires Instagram,
              connu pour sa facilité d'utilisation et sa capacité à télécharger
              Instagram de haute qualité des histoires aux vitesses les plus
              rapides. Téléchargez des histoires Instagram sur votre téléphone,
              PC ou tablette avec la plus haute qualité en utilisant notre
              Instagram téléchargeur vidéo directement depuis votre navigateur.
              Aucun logiciel l'installation est requise et il prend en charge
              Android et iOS.
            </p>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Pourquoi utiliser Savinginsta pour les téléchargements d'histoires
              Instagram ?
            </h3>
            <p class="f-16 c-ccc">
              Les histoires Instagram, remplies de photos et de vidéos
              captivantes, sont une partie importante de notre expression
              numérique mais ne sont visibles que pendant 24 heures. Si vous
              aimez regarder les Stories Instagram et que vous souhaitez
              téléchargez-les, Savinginsta est là pour vous aider. Entrez
              simplement le URL de l'histoire Instagram dans Savinginsta et
              téléchargez le meilleur Histoires Instagram gratuitement.
            </p>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Comment télécharger une histoire vidéo Instagram ?
              </h3>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Étape01:</span>
                  <span class="f-16 c-000">
                    Entrez le nom d'utilisateur Instagram dont vous souhaitez
                    raconter l'histoire télécharger dans Savinginsta.App.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Étape02:</span>
                <span class="f-16 c-000">
                  Choisissez l'histoire que vous souhaitez télécharger.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Étape03:</span>
                <span class="f-16 c-000"
                  >Cliquez sur « Télécharger » pour enregistrer la story
                  Instagram vidéo sur votre appareil.</span
                >
              </div>
            </div>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Comment télécharger une histoire Instagram sur votre téléphone ?
            </h3>
            <div class="attributes-list">
              <div class="features-title">
                Le téléchargement est super simple. Voici un guide détaillé :
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Ouvrez Instagram dans un navigateur comme Chrome, Firefox ou
                  le Application Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Sélectionnez une histoire que vous trouvez attrayante.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Cliquez sur la vidéo que vous souhaitez télécharger.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Copiez l'URL de l'histoire à partir de la barre d'adresse.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Collez le nom d'utilisateur dans la zone d'adresse sur
                  Savinginsta.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Appuyez sur « Télécharger » pour télécharger l'histoire
                  Instagram en ligne.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Votre photo ou vidéo d’histoire IG téléchargée est maintenant
                  dans votre dossier.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Comment télécharger des histoires et des faits saillants
                Instagram en ligne ?
              </h3>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="f-16 c-000"
                    >Obtenez le lien des histoires Instagram ou copiez le nom
                    d'utilisateur du compte Instagram que vous souhaitez
                    télécharger depuis.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="f-16 c-000"
                  >Accédez à Savinginsta - Insta Story Downloader et collez le
                  lien d'histoire dans la barre d'outils.
                </span>
              </div>
              <div class="step">
                <span class="f-16 c-000"
                  >Sélectionnez l'histoire affichée à l'écran, choisissez
                  l'histoire vous souhaitez télécharger, puis appuyez sur
                  « Télécharger ».</span
                >
              </div>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Qu'est-ce qui fait de Savinginsta.Com la meilleure histoire
              Instagram (IG) à télécharger Outil?
            </h3>
            <ul class="f-16 c-ccc">
              <li>Outil convivial et le plus rapide.</li>
              <li>Mises à jour constantes pour offrir le meilleur service.</li>
              <li>
                Complètement libre! Nous soutenons notre développement par un minimum
                 publicité.
              </li>
            </ul>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Outils</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/fr/instagram-story-download"
                      >Téléchargeur d'histoires Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <nuxt-link to="/fr/instagram-reels-video-download"
                      >Téléchargeur de bobines Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Téléchargeur Tiktok</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Soutien</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Contact </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Légal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Conditions d'utilisation
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> politique de confidentialité </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Nous ne sommes pas affiliés à Instagram ou Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>
    
<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";
export default {
  components: { pageHeader, SuccessContent },
  head: {
    htmlAttrs: {
      lang: "fr",
    },
    bodyAttrs: {
      "data-lang": "fr",
    },
    title: "Meilleur téléchargeur gratuit d'histoires Instagram",
    meta: [
      { property: "og:locale", content: "fr" },
      //Page Information
      {
        name: "description",
        content:
          "Téléchargez en ligne des histoires Instagram sans effort avec Savinginsta Instagram Downloader gratuit. Enregistrez des histoires Instagram de haute qualité directement sur votre ordinateur ou votre téléphone sans aucune publicité. Aucun filigrane",
      },

      //Schema.org Microdata
      {
        itemprop: "name",
        content: "Meilleur téléchargeur gratuit d'histoires Instagram",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content: "Meilleur téléchargeur gratuit d'histoires Instagram",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/fr/instagram-story-download" },

      {
        property: "og:description",
        content:
          "Téléchargez en ligne des histoires Instagram sans effort avec Savinginsta Instagram Downloader gratuit. Enregistrez des histoires Instagram de haute qualité directement sur votre ordinateur ou votre téléphone sans aucune publicité. Aucun filigrane",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/fr/instagram-story-download" },
      {
        name: "twitter:title",
        content: "Meilleur téléchargeur gratuit d'histoires Instagram",
      },
      {
        name: "twitter:description",
        content:
          "Téléchargez en ligne des histoires Instagram sans effort avec Savinginsta Instagram Downloader gratuit. Enregistrez des histoires Instagram de haute qualité directement sur votre ordinateur ou votre téléphone sans aucune publicité. Aucun filigrane",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/fr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el/instagram-story-download",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/fr/instagram-story-download",
      },
    ],
    script: [
      {
        json: {
          "@context": "http://schema.org",
          "@graph": [
            {
              "@type": "WebSite",
              name: "Savinginsta",
              alternateName: "Instagram downloader",
              url: "https://savinginsta.com",
            },
            {
              "@type": "WebPage",
              name: "Meilleur téléchargeur gratuit d'histoires Instagram - Savinginsta", //title
              inLanguage: "fr", //语种
              description:
                "Téléchargez en ligne des histoires Instagram sans effort avec Savinginsta Instagram Downloader gratuit. Enregistrez des histoires Instagram de haute qualité directement sur votre ordinateur ou votre téléphone sans aucune publicité. Aucun filigrane.", //元描述
              image: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg", //绝对路径
              url: "https://savinginsta.com/fr/instagram-story-download", //当前url
            },
          ],
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Qu'est-ce qu'un téléchargeur d'histoires Instagram ?`,
          content: `C'est un outil gratuit pour télécharger facilement des Stories Instagram sans inscription.`,
        },
        {
          title: `Comment télécharger une histoire vidéo Instagram ?`,
          content: `Suivez les instructions simples ci-dessus pour télécharger rapidement des histoires Instagram sur Savinginsta.`,
        },
        {
          title: `Comment puis-je télécharger les faits saillants d’Instagram ?`,
          content: `Pour télécharger les faits saillants d'Instagram, le compte doit être public. Entrez le nom d'utilisateur sur Savinginsta.app et cliquez sur « Télécharger ».`,
        },
        {
          title: `Que faire si je souhaite consulter les stories IG de manière anonyme ?`,
          content: `Nous avons une solution parfaite : notre visionneuse anonyme d'histoires Instagram, Instagram Story Viewer.`,
        },
        {
          title: `Avez-vous besoin de vous connecter avec votre compte Instagram ?`,
          content: `Aucune connexion requise. Savinginsta ne demande aucune information personnelle, garantissant des téléchargements sécurisés et anonymes.`,
        },
        {
          title: `Puis-je enregistrer des vidéos directement sur Instagram ?`,
          content: `Oui, mais il faut attendre la fin de la vidéo.`,
        },
        {
          title: `Le site Web prend-il en charge le téléchargement depuis Insta pour les ordinateurs ?`,
          content: `Absolument, vous pouvez télécharger des vidéos, des photos, des histoires et bien plus encore depuis un PC. Voir aussi : Télécharger depuis Insta sur PC.`,
        },
        {
          title: `Pouvez-vous télécharger une histoire Instagram pour Android ?`,
          content: `Oui, copiez le lien de publication, collez-le dans la zone de notre site Web et enregistrez. Pour plus d'informations : Téléchargez depuis Insta sur Android.`,
        },
        {
          title: `Comment télécharger des vidéos et des photos Instagram Story sur iPhone?`,
          content: `C'est aussi simple que sur Android. Consultez le guide pour télécharger l'histoire Instagram pour iOS.`,
        },
        {
          title: `Où puis-je trouver des vidéos d’histoires enregistrées sur un ordinateur ?`,
          content: `Vérifiez l'historique de téléchargement de votre navigateur en utilisant Ctrl+J pour Windows et Shift+Command+J pour Mac.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "story",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "story",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "story",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "story",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "story",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "story",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },
    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "story",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "story",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/story.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
    